package com.shujia.wyh.day23;

/*
        需求：求出5的阶乘：
            5! = 5*4*3*2*1 = 120
               = 5*4!
               = 5*4*3!
               = 5*4*3*2!
               = 5*4*3*2*1!
 */
public class DiGuiDemo2 {
    public static void main(String[] args) {
        //在学习递归之前解决该问题的方式：
//        System.out.println(5*4*3*2*1);
        int result = 1;
        for (int i = 2; i <= 5; i++) {
            result = result * i;
        }
        System.out.println("5的阶乘为：" + result);
        System.out.println("===================================");
        //使用递归实现
        int i = jieCheng(5);
        System.out.println("5的阶乘为：" + i);


    }

    /*
            定义递归方法实现求阶乘
                1、结束条件：
                    if(i==1){return 1}

                2、递归的规律：
                    if(i!=1){
                        return i*jieCheng(i-1);
                    }
     */
    public static int jieCheng(int i) { // 5
        if (i == 1) {
            return 1;
        } else {
            //5 * jieCheng(4)
            //5 * 4 * jieCheng(3)
            //5 * 4 * 3 * jieCheng(2)
            //5 * 4 * 3 * 2 * jieCheng(1)
            return i * jieCheng(i - 1);
        }
    }
}
